<?php

namespace SisGG\FinalBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use SisGG\FinalBundle\Entity\Image;
use SisGG\FinalBundle\Entity\Cliente;
use SisGG\FinalBundle\Entity\Mercaderia;
use SisGG\FinalBundle\Entity\CategoriaProductoVenta;
use SisGG\FinalBundle\Form\ClienteType;
use SisGG\FinalBundle\Entity\Ciudad;
use SisGG\FinalBundle\Entity\Empresa;
class DefaultController extends Controller
{
    /**
     * @return SisGG\FinalBundle\Entity\Empresa;
     */
    public function getEmpresa(){
        return $this->getDoctrine()->getEntityManager()->getRepository('SisGGFinalBundle:Empresa')->find(1);               
    }
    
    public function indexAction(){
        $categoria1 = new CategoriaProductoVenta();
        $categoria1->setNombre('Embutido');
        $categoria2 = new CategoriaProductoVenta();
        $categoria2->setNombre('Embutidito');
        $categoria1->addHijo($categoria2);
        $categoria2->setPadre($categoria1);
        $materia = new Mercaderia();
        $materia->setNombre('Mayonesa');
        $categoria2->addProductoVenta($materia);
        $materia->setCategoria($categoria2);
        $em = $this->getDoctrine()->getEntityManager();
        $em->persist($categoria2);
        $em->persist($categoria1);
        $em->persist($materia);
        $ciudad = new Ciudad();
        $ciudad->setNombre('Posadas');
        $ciudad->setProvincia($this->getDoctrine()->getEntityManager()->getRepository('SisGGFinalBundle:Provincia')->find(1));
        $ciudad->setCodigoPostal(3300);
        $em->persist($ciudad);
        $em->flush();
    }
    
    public function productoVentaAction(){
        $em = $this->getDoctrine()->getEntityManager();
        $repositorio = $em->getRepository('SisGGFinalBundle:ProductoVenta'); 
        $pv = $repositorio->find(1);
        $formulario = $this->createFormBuilder($pv)
                ->add('nombre','search')
                ->add('mercaderia')
                ->add('plato')
                ->add('categoria')
                ->getForm();
        $categoria = $pv->getCategoria();
        $parameters = array('form'=>$formulario->createView(),'categoria'=> $categoria->getPadre());
        return $this->render('SisGGFinalBundle:Default:productoVenta.html.twig',$parameters);
    }
    
    public function adminAction(){
        $mensaje = array('mensaje'=>'Bienvenido seleccione una actividad');
        if ($this->getRequest()->getMethod() === 'POST') {
            $mensaje=$this->getRequest()->get('mensaje');    
        }        
        return $this->render('SisGGFinalBundle:Administrador:admin.html.twig',$mensaje);
    }
    
    public function nuevoClienteAction(){
    $cliente = new Cliente();
    $form = $this->createForm(new ClienteType, $cliente);
    if ($this->getRequest()->getMethod() === 'POST') {
        $form->bindRequest($this->getRequest());
        if ($form->isValid()) {
            $em = $this->getDoctrine()->getEntityManager();
            $em->persist($cliente);
            $em->flush();
            return $this->redirect($this->generateUrl('clientes'));
        }
    }
    return $this->render('SisGGFinalBundle:Default:nuevoCliente.html.twig',array('form' => $form->createView()));  
    }
    
    public function editarClienteAction($id){
    $em = $this->getDoctrine()->getEntityManager();
    $repositorio = $em->getRepository('SisGGFinalBundle:Cliente'); 
    $cliente = $repositorio->find($id);
    $form = $this->createForm(new ClienteType(),$cliente);
    if ($this->getRequest()->getMethod() === 'POST') {
        $form->bindRequest($this->getRequest());
        if ($form->isValid()) {
            $em->flush();
            return $this->redirect($this->generateUrl('clientes'));
        }
    }
    return $this->render('SisGGFinalBundle:Default:editarCliente.html.twig',array('form' => $form->createView(),'id'=>$cliente->getId()));  
    }
    
    public function eliminarClienteAction($id){
    $em = $this->getDoctrine()->getEntityManager();
    $repositorio = $em->getRepository('SisGGFinalBundle:Cliente'); 
    $cliente = $repositorio->find($id);
    $em->remove($cliente);
    $em->flush();
    return $this->redirect($this->generateUrl('clientes'));
    }
    
    public function clientesAction(\Symfony\Component\HttpFoundation\Request $peticion){
        $criterio = 'Todos';
        $busqueda = '';
        $direccion = '';
        $id = '';
        $repositorio = $this->getDoctrine()->getRepository('SisGGFinalBundle:Cliente');
        if ($peticion->getMethod() == 'POST') {
            $criterio=$this->getRequest()->get('criterio');
            $busqueda=$this->getRequest()->get('busqueda');
            $direccion=$this->getRequest()->get('direccion');
            $id=$this->getRequest()->get('id');
                if($busqueda=='' || $criterio=='Todos'){
                    $clientes = $repositorio->findAll();
                    $busqueda='';
                }else{
                    $clientes = $repositorio->findBy(array($criterio=>$busqueda));
                }
            
        }else{
            $clientes = $repositorio->findAll();
        }
        return $this->render('SisGGFinalBundle:Default:clientes.html.twig',array('clientes'=>$clientes,'criterio'=>$criterio,'busqueda'=>$busqueda,'direccion'=>$direccion,'id'=>$id));
    }
    
      
    
    public function uploadedAction(){
        $repositorio = $this->getDoctrine()
            ->getRepository('SisGGFinalBundle:Foto');
        $logo = $repositorio->findAll();
        $form = $this->createFormBuilder($logo)
        ->add('name')
        ->add('path')        
        ->getForm();
        return $this->render('SisGGFinalBundle:Default:subido.html.twig',array('form' => $form->createView(),'logos'=>$logo));
    }   
    
    public function uploadAction(){
    $logo = new Image();
    $form = $this->createFormBuilder($logo)
        ->add('name')
        ->add('file')
        ->getForm();
    if ($this->getRequest()->getMethod() === 'POST') {
        $form->bindRequest($this->getRequest());
        if ($form->isValid()) {
            $em = $this->getDoctrine()->getEntityManager();
            $logo->upload();
            $em->persist($logo);
            $em->flush();
            return $this->redirect($this->generateUrl('foto_cargada'));
        }
    }
    return $this->render('SisGGFinalBundle:Default:foto.html.twig',array('form' => $form->createView(),'dir'=> $logo->getUploadRootDir()));  
    }
}
